From 9011a79ed2f205554315b3d15835e07227f1b97b Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Thu, 11 Apr 2013 11:35:17 +0200 Subject: [PATCH] Make gdk_flush_outstanding_moves "reentrant" If do_move_region_bits_on_impl causes updates they will propely be moved by the outstanding moves we have not yet flushed. --- gdk/gdkwindow.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c index f9628f3e8e..482f4990e6 100644 --- a/gdk/gdkwindow.c +++ b/gdk/gdkwindow.c @@ -3499,24 +3499,22 @@ static void gdk_window_flush_outstanding_moves (GdkWindow *window) { GdkWindow *impl_window; - GList *l, *outstanding; GdkWindowRegionMove *move; impl_window = gdk_window_get_impl_window (window); - outstanding = impl_window->outstanding_moves; - impl_window->outstanding_moves = NULL; - for (l = outstanding; l != NULL; l = l->next) + while (impl_window->outstanding_moves) { - move = l->data; + move = impl_window->outstanding_moves->data; + impl_window->outstanding_moves = + g_list_delete_link (impl_window->outstanding_moves, + impl_window->outstanding_moves); do_move_region_bits_on_impl (impl_window, move->dest_region, move->dx, move->dy); gdk_window_region_move_free (move); } - - g_list_free (outstanding); } /** -- 2.30.2